SunTime is a smart light for people who are confined to lie in bed or sit for prolonged periods of time. A sensor mat is placed under the patient to work out the patient’s posture, and the built-in arduino will calculates and turns the LEDs units on gradually with a corresponding time interval. Through indicating the patient’s need of reposition regularly, the chance of developing pressure ulcer is minimized.
TOUCH SENSOR
CIRCUIT DIAGRAM
CODING
int sensorPin1 = A0;
int sensorPin2 = A1;
int sensorPin3 = A2;
int sensorPin4 = A3;
int ledPin3 = 3;
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11 ;
int ledPin12 = 12;
int ledPin13 = 13;
int sensorValue1 = 0;
int sensorValue2 = 0;
int sensorValue3 = 0;
int sensorValue4 = 0;
int resetMove = 0, oneSet = 0, twoSet=0, threeSet = 0, fourSet=0;
unsigned long startTime = 0, endTime = 0, totalTime = 0, sensorNumber = 0;
int sensorPin2 = A1;
int sensorPin3 = A2;
int sensorPin4 = A3;
int ledPin3 = 3;
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11 ;
int ledPin12 = 12;
int ledPin13 = 13;
int sensorValue1 = 0;
int sensorValue2 = 0;
int sensorValue3 = 0;
int sensorValue4 = 0;
int resetMove = 0, oneSet = 0, twoSet=0, threeSet = 0, fourSet=0;
unsigned long startTime = 0, endTime = 0, totalTime = 0, sensorNumber = 0;
void setup() {
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin13, OUTPUT);
Serial.begin(9600);
}
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin12, OUTPUT);
pinMode(ledPin13, OUTPUT);
Serial.begin(9600);
}
void loop() {
resetMove = 0;
resetMove = 0;
sensorValue1 = analogRead(sensorPin1);
sensorValue2 = analogRead(sensorPin2);
sensorValue3 = analogRead(sensorPin3);
sensorValue4 = analogRead(sensorPin4);
sensorValue2 = analogRead(sensorPin2);
sensorValue3 = analogRead(sensorPin3);
sensorValue4 = analogRead(sensorPin4);
sensorNumber = 0;
if(sensorValue1 > 500){
oneSet = 1;
sensorNumber++;
}
if(sensorValue2 > 500){
twoSet = 1;
sensorNumber++;
}
if(sensorValue3 > 500){
threeSet = 1;
sensorNumber++;
}
if(sensorValue4 > 500){
fourSet = 1;
sensorNumber++;
}
if(sensorValue1 > 500){
oneSet = 1;
sensorNumber++;
}
if(sensorValue2 > 500){
twoSet = 1;
sensorNumber++;
}
if(sensorValue3 > 500){
threeSet = 1;
sensorNumber++;
}
if(sensorValue4 > 500){
fourSet = 1;
sensorNumber++;
}
startTime = millis();
while(((sensorValue1 > 500) || (sensorValue2 > 500) || (sensorValue3 > 500)|| (sensorValue4 > 500))&& (resetMove == 0)) {
endTime = millis();
totalTime=endTime-startTime;
totalTime=endTime-startTime;
if(totalTime > 2000 * sensorNumber){ // totalTime is adjustable
digitalWrite(ledPin5,HIGH); // 2 seconds time-interval is used for testing
}
if(totalTime > 4000 * sensorNumber){
digitalWrite(ledPin12,HIGH);
}
if(totalTime > 6000 * sensorNumber){
digitalWrite(ledPin13,HIGH);
}
if(totalTime > 8000 * sensorNumber){
digitalWrite(ledPin8,HIGH);
}
if(totalTime > 10000 * sensorNumber){
digitalWrite(ledPin7,HIGH);
}
if(totalTime > 12000 * sensorNumber){
digitalWrite(ledPin6,HIGH);
}
if(totalTime > 14000 * sensorNumber){
digitalWrite(ledPin3,HIGH);
}
if(totalTime > 16000 * sensorNumber){
digitalWrite(ledPin4,HIGH);
}
if(totalTime > 18000 * sensorNumber){
digitalWrite(ledPin9,HIGH);
delay(100); // to create flashing stars
digitalWrite(ledPin9,LOW);
delay(100);
}
if(totalTime > 20000 * sensorNumber){
digitalWrite(ledPin10,HIGH);
delay(100);
digitalWrite(ledPin10,LOW);
delay(100);
}
if(totalTime > 22000 * sensorNumber){
digitalWrite(ledPin11,HIGH);
delay(100);
digitalWrite(ledPin11,LOW);
delay(100);
}
sensorValue1 = analogRead(sensorPin1);
if(((oneSet == 0) && (sensorValue1 > 500)) || ((oneSet == 1) && (sensorValue1 < 500))) {
resetMove = 1;
oneSet=0;
twoSet=0;
threeSet=0;
fourSet=0;
}
sensorValue2 = analogRead(sensorPin2);
if(((twoSet == 0) && (sensorValue2 > 500)) || ((twoSet == 1) && (sensorValue2 < 500))){
resetMove = 1;
oneSet=0;
twoSet=0;
threeSet=0;
fourSet=0;
}
sensorValue3 = analogRead(sensorPin3);
if(((threeSet == 0) && (sensorValue3 > 500)) || ((threeSet == 1) && (sensorValue3 < 500))){
resetMove = 1;
oneSet=0;
twoSet=0;
threeSet=0;
fourSet=0;
}
sensorValue4 = analogRead(sensorPin4);
if(((fourSet == 0) && (sensorValue4 > 500)) || ((fourSet == 1) && (sensorValue4 < 500))){
resetMove = 1;
oneSet=0;
twoSet=0;
threeSet=0;
fourSet=0;
}
}
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,LOW);
digitalWrite(ledPin9,LOW);
digitalWrite(ledPin10,LOW);
digitalWrite(ledPin11,LOW);
digitalWrite(ledPin12,LOW);
digitalWrite(ledPin13,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,LOW);
digitalWrite(ledPin6,LOW);
digitalWrite(ledPin7,LOW);
digitalWrite(ledPin8,LOW);
digitalWrite(ledPin9,LOW);
digitalWrite(ledPin10,LOW);
digitalWrite(ledPin11,LOW);
digitalWrite(ledPin12,LOW);
digitalWrite(ledPin13,LOW);
}